*February 17th, 2025 
*David Attewell and Delia Zollinger
*Analyses for "Educational Networks, Social Closure, and Cleavage Stabilization"

use "C:\Users\dattew\Dropbox\Education_systems\Analyses\Stata_code\Educational Networks, Social Closure, and Cleavage Stabilization Replication Code.do"

***STEP 1: DESCRIPTIVES 

graph set window fontface "LMRoman10-Regular"

set scheme white_tableau

*Figure 1: Network Homogeneity By Education Level and Field
cibar share_hi_ed if select==1, over (education_3)
cibar share_hi_CECT if select==1, over (resp_CECT_3)

*Figure 2: Sources of Close Ties (tabulated and transferred to Excel by authors)

tab ng_met_work if select==1
tab ng_met_life if select==1
tab ng_met_ed if select==1
tab ng_met_online if select==1

*** STEP 2: MAIN ANALYSES

*models include key interaction term, controls for father's education, income insecurity, urbanity, gender, age, number of close ties reported (for field or level, depending on key IV), network size (reported number of friends overall), and country FEs.

**Fig. 3: Radical Right and New Left Voting By Network Homogeneity (Ed. Level) 

*Rad right
reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left
reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


**Fig. 4: Radical Right and New Left Voting By Network Homogeneity (Field)

reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)


**Fig. 5: Universalist Identity and Closeness to People of Humble Means By Network Homogeneity (Level)

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg id_humble i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

** Fig. 6: Universalist Identity and Closeness to People of Humble Means By Network Homogeneity (Field)

reg universalism_std i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same=(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalism"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

reg id_humble i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same=(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

**Fig. 7: Immigration Attitudes and Income Egalitarianism By Network Homogeneity (Level)

*Immg Attitudes
reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Income egalitarianism
reg predispositions_4_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support, Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

** Fig. 8: Immigration Attitudes and Income Egalitarianism By Network Homogeneity (Field)

*Immigration attitudes
reg predispositions_1_ i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same=(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*Income egalitarianism
reg predispositions_4_ i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same=(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support, Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)


***STEP 3: APPENDIX ANALYSES
**Appendix A an explanation of measure, no calculations 

*Scale statistics for universalist ID
alpha id_uni id_cosmopolitan id_migrant id_feminist, item 

**Appendix B: Regression Tables
*Note: For each analysis, first model is baseline with no interaction, second model is full model (including interaction with network education level/field, and control for father's education level/field). 


*Radical Right PTV (level)
reg ptv_rad_right i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1


*Radical Right PTV (field)
reg ptv_rad_right i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 
 
reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

*New Left PTV (level)
reg ptv_newleft i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

*New Left PTV (field)
reg ptv_newleft i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

*Universalist Identity (level)

reg universalism_std i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

*People of humble means (level)
reg id_humble i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg id_humble i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1  

*Universalist identity(field)
reg universalism_std i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

reg universalism_std i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

*People of humble means (field)
reg id_humble i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

reg id_humble i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

*Income Differences Should Be Small (level) 

reg predispositions_4_ i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg predispositions_4_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

*Immigration Attitudes (level)
reg predispositions_1_ i.degree hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1  

*Immigration Attitudes (field)

reg predispositions_1_ i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

reg predispositions_1_ i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

*Income Differences Should Be Small (Field) 

reg predispositions_4_ i.resp_CECT_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

reg predispositions_4_ i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 



**Appendix C: Sensitivity analyses 

**Appendix C.1.: Replicating Analyses Without Controls

*Fig 3: Radical Right & New Left Voting By Network Homogeneity (Level)

reg ptv_rad_right i.degree##c.share_degree_same i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


reg ptv_newleft i.degree##c.share_degree_same i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


*Fig. 4: Radical Right & New Left Voting By Network Homogeneity (Field)

reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)


reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

***Figure 5: Universalist Identity and Closeness to People of Humble Means (Level)

reg universalism_std i.degree##c.share_degree_same i.cntry if select==1 

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


reg id_humble i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


*Fig. 6: Identities (Field)

reg universalism_std i.resp_CECT_3##c.share_edfield_same i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

reg id_humble i.resp_CECT_3##c.share_edfield_same i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Fig. 7: Immigration Attitudes and Income Egalitarianism By Network Homogeneity (Level)

reg predispositions_1_ i.degree##c.share_degree_same i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


reg predispositions_4_ i.degree##c.share_degree_same i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support: Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau) 

* Fig. 8: Immigration Attitudes and Income Egalitarianism By Network Homogeneity (Field)

*Immigration attitudes
reg predispositions_1_ i.resp_CECT_3##c.share_edfield_same i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Econ egalitarianism
reg predispositions_4_ i.resp_CECT_3##c.share_edfield_same i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support: Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)


**Appendix C.2.: Replicating Level Analyses Controlling for Network CECT and Vice Versa

*Fig 3: RR and New Left Voting (Level) 

*Radical right PTV
reg ptv_rad_right i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left PTV
reg ptv_newleft i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Fig. 4: RR and New Left Voting (Field controlling for network level)

*Radical right PTV
reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*New left PTV
reg ptv_newleft i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Fig. 5: Identities (Level Controlling for Field) 

*Universalist identity
reg universalism_std i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Closeness to people of humble means
reg id_humble i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness: People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Fig 6: Identities (Field Controlling for Level)

*Universalist identity
reg universalism_std i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Closeness to people of humble means
reg id_humble i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to People of Humble Means"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Fig. 7: Attitudes (Level Controlling for Field)

*Immigration attitudes
reg predispositions_1_ i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Econ egalitarianism
reg predispositions_4_ i.degree##c.share_degree_same share_edfield_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support: Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


*Fig 8: Attitudes (Field)

*Immigration attitudes
reg predispositions_1_ i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Econ egalitarianism
reg predispositions_4_ i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Support: Income Differences Should Be Small"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)


**Appendix C.2. extension: Re-running field models for the highly educated only

reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if degree==1 & select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*New left PTV
reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if degree==1 & select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

**Appendix C.3.: Testing Sensitivity of Results to Different Operationalizations of Close Ties 

******Re-running analyses with new share measures. Models go in order of total, parents only, partner only

*Total rad right (level)
reg ptv_rad_right i.degree##c.share_sameed_total hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_total=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_total)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Parents rad right (level)

reg ptv_rad_right i.degree##c.share_sameed_tiesparents hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_tiesparents=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiesparents)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*partner rad right (level)

reg ptv_rad_right i.degree##c.share_sameed_tiespartner hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_tiespartner=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiespartner)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Total rad right (field)

reg ptv_rad_right i.resp_CECT_3##c.share_sameCECT_total hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_sameCECT_total =(0 (.25) 1))

marginsplot, xdimension(at(share_sameCECT_total)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Radical Right Voting"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Parents only rad right (field)

reg ptv_rad_right i.resp_CECT_3##c.share_sameCECT_tiesparents hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_sameCECT_tiesparents =(0 (.25) 1))

marginsplot, xdimension(at(share_sameCECT_tiesparents)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Radical Right Voting"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Partner only rad right (field)

reg ptv_rad_right i.resp_CECT_3##c.share_sameCECT_tiespartner hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_sameCECT_tiespartner =(0 (.25) 1))

marginsplot, xdimension(at(share_sameCECT_tiespartner)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Radical Right Voting"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)


*New left total (level) (strong)
reg ptv_newleft i.degree##c.share_sameed_total hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_total=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_total)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left parents only (level)
reg ptv_newleft i.degree##c.share_sameed_tiesparents hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_tiesparents=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiesparents)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_newleft i.degree##c.share_sameed_tiespartner hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_tiespartner=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiespartner)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left total (field)

reg ptv_newleft i.resp_CECT_3##c.share_sameCECT_total hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_sameCECT_total =(0 (.25) 1))

marginsplot, xdimension(at(share_sameCECT_total)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted New Left Voting"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)


*Universalism total
reg universalism_std i.degree##c.share_sameed_total hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry i.cntry if select==1 

margins (degree), at (share_sameed_total=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_total)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Universalism, parents

reg universalism_std i.degree##c.share_sameed_tiesparents hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry i.cntry if select==1 

margins (degree), at (share_sameed_tiesparents=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiesparents)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Universalism, partner
reg universalism_std i.degree##c.share_sameed_tiespartner hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry i.cntry if select==1 

margins (degree), at (share_sameed_tiespartner=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_tiespartner)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Immigration attitudes, total

reg predispositions_1_ i.degree##c.share_sameed_total hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_sameed_total=(0 (.25) 1))

marginsplot, xdimension(at(share_sameed_total)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

***Appendix D: Center-right voting

reg ptv_center_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Center Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_center_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Vote Propensity: Center Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

***Appendix E: Different Operationalizations of Political Preferences, Vote Choice and Brexit

*Vote Choice vs. PTV 

*Rad right for Germany and Switzerland (level)
logit rad_right_vote i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & cntry==1 | cntry==2

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Pr(Vote Radical Right):"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left (level)
logit newleft_vote i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & cntry==1 | cntry==2

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") title("") ytitle("Pr(Vote New Left):") ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Rad right for Germany and Switzerland (field)

logit rad_right_vote i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 & cntry==1 | cntry==2

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Pr Vote Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

logit newleft_vote i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 & cntry==1 | cntry==2

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Pr Vote New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

*Appendix F: Operationalizing Political Preferences With Vote Choice and Brexit Orientations

*UK lib dems and greens 

logit newleft_vote_2019 i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==3

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle("Pr Vote New Left") ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


*Brexit

*Level
reg Brexit_vote_4 i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 &cntry==3

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to Remain"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Field
reg Brexit_vote_4 i.resp_CECT_3##c.share_edfield_same share_degree_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==3 

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) ytitle(`"Predicted Closeness to Remain"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT Level"') scheme(white_tableau)

***Appendix G: Discussion Networks 

*Rad right (level)
reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & ng_talkmean>2.75

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*New left (level)
reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & ng_talkmean>2.75

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Rad right (field)

reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 & ng_talkmean>2.75

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*New left (field)

reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size i.cntry if select==1 & ng_talkmean>2.75

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*Universalism 

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & ng_talkmean>2.75

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


*Immigration Attitudes 

reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size i.cntry if select==1 & ng_talkmean>2.75

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)


***Appendix E: Country-Level Patterns

*PTV RR (Level)

reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title ("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==2

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_rad_right i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==3

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*PTV NL (Level)

*New left
reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==1

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==2

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg ptv_newleft i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==3

margins (degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*PTV Rad Right (Field)

*DE
reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*CH
reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==2

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*UK
reg ptv_rad_right i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==3

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: Radical Right"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

**New Left

*DE
reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==1

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*CH
reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==2

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)

*UK

reg ptv_newleft i.resp_CECT_3##c.share_edfield_same i.father_CECT3 hh_income i.urban_3 i.gender age i.num_closetiesfield network_size if select==1 & cntry==3

margins resp_CECT_3 if inlist(resp_CECT_3,1,3)==1, at (share_edfield_same =(0 (.25) 1))

marginsplot, xdimension(at(share_edfield_same)) plotdimension(resp_CECT_3) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Vote Propensity: New Left"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same CECT"') scheme(white_tableau)


*Universalist ID (Level)

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==2

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg universalism_std i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==3

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Universalist Identity"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

*Immigration Attitudes 

reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==1

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==2

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)

reg predispositions_1_ i.degree##c.share_degree_same i.father_ed_3 hh_income i.urban_3 i.gender age i.num_closeties network_size if select==1 & cntry==3

margins(degree), at (share_degree_same=(0 (.25) 1))

marginsplot, xdimension(at(share_degree_same)) plotdimension(degree) allxlabels plot1opts(lcolor(%50)msymbol(Sh)) plot2opts(lcolor(%50)msymbol(Oh)) recastci(rarea) ci1opts(fcolor(%50) lpattern(dash)) ci2opts(fcolor(%50) lpattern(dot)) title("") ytitle(`"Predicted Opposition to Immigration"') ytitle(, alignment(middle)) xtitle(`"Share of Contacts With Same Degree Level"') scheme(white_tableau)











